package com.hd123.rumba.gwt.widget2.client.grid.renderer;

import java.util.Date;

import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.ui.Label;

/**
 * 日期时间标签渲染器。provider应提供的Date类型数据，若provider提供的是null则显示空串。
 * 
 * @author LiQi
 * 
 */
public class RDateTimeRenderer extends Label implements RCellRenderer {

  /** 日期格式 */
  private DateTimeFormat format;

  /** 日期值 */
  private Date value;

  public Object getValue() {
    return value;
  }

  public void setValue(Object value) {
    if (value == null)
      this.value = null;
    else if (value instanceof Date)
      this.value = (Date) value;
    refreshText();
  }

  /**
   * 日期格式
   * 
   * @return
   */
  public DateTimeFormat getFormat() {
    return format;
  }

  /**
   * 设置日期格式
   * 
   * @param format
   */
  public void setFormat(DateTimeFormat format) {
    this.format = format;
    refreshText();
  }

  /**
   * 根据日期值和日期格式刷新显示的字符串
   * 
   */
  private void refreshText() {
    if (value == null)
      setText("");
    else if (format == null)
      setText(value.toString());
    else
      setText(format.format(value));
  }

}
